/*****************************************************************************

FileName: <cconv.h>

Description:
Color Conversion Modules

*****************************************************************************/

#ifndef _CCONV_H
#define _CCONV_H


/* Initialization Routines */
/* ========================*/
void cconvInit();



/* Functions with input yuv420 Prog Planar */
/* =========================================*/


/* yuv420 planar to yuv420 planar */
void yuv420ProgPlanarToyuv420IntPlanar(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarToyvu420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarToyvu420IntPlanar(unsigned char *, unsigned char *, int width, int height);



/* yuv420 planar to yuv422 planar */
void yuv420ProgPlanarToyuv422ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarToyuv422IntPlanar(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarToyvu422ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarToyvu422IntPlanar(unsigned char *, unsigned char *, int width, int height);


/* yuv420 planar to yuv422 packed */
void yuv420ProgPlanarTouyvyProgPacked(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarTouyvyIntPacked(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarToyuyvProgPacked(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarToyuyvIntPacked(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarToyvyuProgPacked(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarToyvyuIntPacked(unsigned char *, unsigned char *, int width, int height);



/* yuv420 planar to yuv444 planar */
void yuv420ProgPlanarToyuv444ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarToyuv444IntPlanar(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarToyvu444ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarToyvu444IntPlanar(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarTouyv444ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarTouyv444IntPlanar(unsigned char *, unsigned char *, int width, int height);


/* yuv420 planar to yuv444 packed */
void yuv420ProgPlanarToyuv444ProgPacked(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarToyuv444IntPacked(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarToyvu444ProgPacked(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarToyvu444IntPacked(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarTouyv444ProgPacked(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarTouyv444IntPacked(unsigned char *, unsigned char *, int width, int height);



/* yuv420 planar to RGB */
void yuv420ProgPlanarToRGBplanar(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarToBGRplanar(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarToRGBpacked(unsigned char *, unsigned char *, int width, int height);
void yuv420ProgPlanarToBGRpacked(unsigned char *, unsigned char *, int width, int height);







/* Functions with output yuv420 Prog Planar */
/* =========================================*/


/* yuv420 planar to yuv420 planar */
void yuv420IntPlanarToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yvu420ProgPlanarToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yvu420IntPlanarToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);



/* yuv422 planar to yuv420 planar */
void yuv422ProgPlanarToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yuv422IntPlanarToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yvu422ProgPlanarToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yvu422IntPlanarToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);


/* yuv422 packed to yuv420 planar */
void uyvyProgPackedToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void uyvyIntPackedToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yuyvProgPackedToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yuyvIntPackedToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yvyuProgPackedToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yvyuIntPackedToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);



/* yuv444 planar to yuv420 planar */
void yuv444ProgPlanarToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yuv444IntPlanarToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yvu444ProgPlanarToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yvu444IntPlanarToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void uyv444ProgPlanarToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void uyv444IntPlanarToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);


/* yuv444 packed to yuv420 planar */
void yuv444ProgpackedToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yuv444IntpackedToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yvu444ProgpackedToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void yvu444IntpackedToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void uyv444ProgpackedToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void uyv444IntpackedToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);



/* RGB yuv420 planar */
void RGBplanarToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void BGRplanarToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void RGBpackedToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);
void BGRpackedToyuv420ProgPlanar(unsigned char *, unsigned char *, int width, int height);


#endif

